這幾年 Serverless (無伺服器) 與邊緣運算非常熱門,我們的專案不自己架設龐大的 MySQL 或 PostgreSQL,而是選用極度輕量、基於 libSQL 分支的 Turso 雲端資料庫。今天我們將完成 Turso 的註冊,並在後端建立安全的連線設定。
請先到 Turso 官網 註冊並建立一個新的 Database。取得 Database URL 與 Auth Token 後,我們回到後端專案。
安裝 dotenv 來管理環境變數,以及官方提供的 libsql client:
npm install dotenv @libsql/client
在後端根目錄建立 .env 檔案(非常重要:記得將它加入 .gitignore 避免外洩機密):
TURSO_DATABASE_URL=你的_database_url
TURSO_AUTH_TOKEN=你的_auth_token
接著建立 src/db.ts 來設定資料庫連線模組,方便未來其他檔案引用:
// src/db.ts
import { createClient } from "@libsql/client";
import dotenv from "dotenv";
// 載入環境變數
dotenv.config();
export const db = createClient({
url: process.env.TURSO_DATABASE_URL as string,
authToken: process.env.TURSO_AUTH_TOKEN as string,
});
當我們打算在未來將後端部署到 Vercel 這種 Serverless 平台時,資料庫的選擇就必須非常謹慎:
| 比較項目 | Turso (libSQL/SQLite) | 傳統資料庫 (如 AWS RDS MySQL) | 差異與影響 |
|---|---|---|---|
| 連線方式 | 基於 HTTP 協定 | 基於 TCP 長連線 | Serverless 每次呼叫都會啟動新的實體。傳統 TCP 連線建立極慢且耗資源;HTTP 則輕量、隨傳隨斷。 |
| 連線數限制 (Connection Pool) | 幾乎無限制 (HTTP 無狀態) | 非常有限 (通常幾十到幾百個) | 如果突發流量讓 Serverless 產生大量實體,傳統 DB 會瞬間發生連線數爆滿 (Too many connections) 導致整個系統崩潰。Turso 完美免疫此問題。 |
| 建置成本 | 超高免費額度 (9GB 空間/十億次讀取) | 通常只有前 12 個月免費 (且常有隱藏流量費) | 對於 Side Project 來說,0 元且無壓力的營運成本是最強大的後盾! |
選用 Turso,我們不僅獲得了關聯式資料庫 (SQL) 的強大查詢能力,更完美適配了現代雲端部署的節奏。

- Turso 建立資料庫畫面

- 取得 Token 畫面
資料庫連線搞定了!這意味著我們的基礎建設(前端、後端、資料庫)在短短五天內已經全數到位。明天開始,我們將正式設計資料表並開始撰寫 Express 的 API 路由!